# @Time    :2025/4/6 21:02
"""
练习题 1：浅拷贝与深拷贝
编写代码，创建一个包含列表和字典的复杂列表对象list_a = [1, [2, 3], {'key': 4}]，
使用浅拷贝和深拷贝分别创建新的列表list_b（浅拷贝）和list_c（深拷贝）。

修改list_a中列表元素list_a[1]，添加一个元素4，
然后分别打印list_b和list_c，观察输出结果并解释原因。
import copy

list_a = [1, [2, 3], {'key': 4}]
list_b = copy.copy(list_a)
list_c = copy.deepcopy(list_a)

list_a[1].append(4)
print("浅拷贝 list_b:", list_b)
print("深拷贝 list_c:", list_c)
"""
import copy

list_a = [1, [2, 3], {'key': 4}]
list_b = copy.copy(list_a)
list_c = copy.deepcopy(list_a)

list_a[1] = 12
print("修改list_a后是：", list_a)  # [1, 12, {'key': 4}]
list_a.append(4)
print("添加一个元素4后是", list_a)  # [1, 12, {'key': 4}, 4]

print(id(list_a), id(list_a[0]), id(list_a[1]), id(list_a[2]))
print(id(list_b), id(list_b[0]), id(list_b[1]), id(list_b[2]))
print(id(list_c), id(list_c[0]), id(list_c[1]), id(list_c[2]))

print(list_b)  # 地址变，元素不变
print(list_c)
